The present disclosure relates to programming of non-volatile memory.
Semiconductor memory has become more popular for use in various electronic devices. For example, non-volatile semiconductor memory is used in cellular telephones, digital cameras, personal digital assistants, mobile computing devices, non-mobile computing devices and other devices. Electrical Erasable Programmable Read Only Memory (EEPROM) and flash memory are among the most popular non-volatile semiconductor memories.
Both EEPROM and flash memory utilize a transistor structure having a floating gate that is positioned above and insulated from the channel region in a semiconductor substrate, as well as between the source and drain regions. A control gate is provided over and insulated from the floating gate. The threshold voltage Vt of the transistor is controlled by the amount of charge that is retained on the floating gate. That is, the minimum amount of voltage that must be applied to the control gate before the transistor is turned on to permit conduction between its source and drain is controlled by the level of charge on the floating gate.
The floating gate can be used to store two ranges of charges, and therefore, the transistor provides a memory element having two possible states, e.g., an erased state and a programmed state. Such a flash memory device is sometimes referred to as a binary flash memory device because each memory element can store one bit of data.
A multi-state or multi-level flash memory device is implemented by identifying multiple distinct allowed/valid programmed threshold voltage ranges. Each distinct threshold voltage range corresponds to a predetermined value for the set of data bits encoded in the memory device. For example, each memory element can store two bits of data when the element can be placed in one of four discrete charge bands corresponding to four distinct threshold voltage ranges.
Typically, a program voltage Vpgm is applied to the control gate during a program operation as a waveform or series of pulses that increase in magnitude over time. In one possible approach, the magnitude of the pulses is increased with each successive pulse by a predetermined step size on the order of 0.2-0.4 V. In the periods between the program pulses, verify operations are carried out. That is, the programming level of each element of a group of elements being programmed in parallel is read between successive programming pulses to determine whether it is equal to or greater than a verify level to which the element is being programmed. For arrays of multi-state flash memory elements, a verification step may be performed for each state of an element to determine whether the element has reached its data-associated verify level. For example, a multi-state memory element capable of storing data in four states may need to perform verify operations for three compare points.
Moreover, when programming an EEPROM or flash memory device, such as a NAND flash memory device in a NAND string, typically Vpgm is applied to the control gate and the bit line is grounded, causing electrons from the channel of a cell or memory element, e.g., storage element, to be injected into the floating gate. When electrons accumulate in the floating gate, the floating gate becomes negatively charged and the threshold voltage of the memory element is raised so that the memory element is considered to be in a programmed state. More information about such programming can be found in U.S. Pat. No. 6,859,397 entitled Source Side Self Boosting Technique For Non-Volatile Memory, and in U.S. Patent Publication No. 2005/0024939 entitled Detecting Over Programmed Memory, both of which are incorporated herein by reference in their entirety.
In multi-level storage devices, various programming techniques can be used to enhance performance in terms of obtaining narrower programmed threshold voltage distributions and higher programming speeds. For example, a coarse/fine programming technique can be used in which an intermediate bit line voltage is applied to storage elements that have reached a specified verify level which is less than the final verify level. This slows down programming so that the threshold voltage distributions can be more precisely controlled.
As with other electronic devices, there is a consumer demand for memory devices to program as fast as possible. For example, the user of a digital camera that stores images on a flash memory card does not want to wait between pictures for an unnecessary long period of time. In addition to programming with reasonable speed, to achieve proper data storage for a multi-state memory cell, the multiple ranges of threshold voltages of the multi-state memory cells should be separated from each other by sufficient margin so that the level of the memory cell can be programmed and read in an unambiguous manner. A tight threshold voltage distribution is recommended. To achieve a tight threshold voltage distribution, small program steps have typically been used, thereby programming the threshold voltage of the cells more slowly. The tighter the desired threshold voltage distribution, the smaller the steps and the slower the programming process.
Typically, in order to maintain reasonable programming times, coarse/fine programming algorithms are not applied to the highest memory state (the state corresponding to the largest positive threshold voltage range). The highest state does not need to be differentiated from a higher state. Typically, it is only necessary to program cells for the highest state above a minimum threshold level to differentiate from the next lowest state. Thus, the distribution of these cells can occupy a wider threshold voltage range without adverse effects on device performance. Coarse/fine programming methodologies require more verify steps as described above. Moreover, the use of coarse/fine programming methodologies may increase the total number of required programming pulses. Since the highest threshold voltage state does not require as tight a threshold voltage distribution in most cases, coarse/fine programming is typically not used so as to decrease overall programming times.
In addition to increased programming times, the use of coarse/fine programming methodology for the highest threshold voltage state can increase the occurrence of program disturb within flash memory devices implemented with the NAND architecture (described more fully hereinafter). To apply a program voltage to the control gate of a selected cell on a selected NAND string, the program voltage is applied on the appropriate word line. This word line will also be connected to a memory cell on every other NAND string in the selected block of memory cells. Some of these memory cells may not be intended for programming. A problem arises when one desires to program one cell on a word line without programming other cells connected to the same word line. Because the program voltage is applied to all cells connected to a word line, an unselected cell (a cell that is not to be programmed) connected to the word line may become inadvertently programmed. The unintentional programming of the unselected cell on the selected word line is referred to as “program disturb.”
While various techniques exist for eliminating or limiting program disturb, some device architects choose not to use coarse/fine programming algorithms for the highest threshold voltage memory state in order to decrease the potential for program disturb. Program disturb occurs most often under application of large program voltages to a word line. The increased number of programming pulses required by coarse/fine programming can lead to the program voltage reaching a higher level than would be reached were coarse/fine programming not used. Accordingly, some implementations of the NAND architecture do not apply coarse/fine programming for the highest threshold voltage state to minimize the occurrence of program disturb.